﻿/******************************************************************************
 * 创建者：gtts
 * 创建日期：2011.4.10
 * 类名：MouseClickListener
 * 说明：鼠标右键事件侦听器
 ******************************************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace GTTSOfLibrary.EventListener
{
    /// <summary>
    /// 鼠标右键侦听类
    /// <remarks>
    /// .NET 提供了关于鼠标操作的一系列事件，但并没有任何事件是与具体的鼠标事件对应的。
    /// 如果我们需要针对鼠标左键和右键进行分别处理的话，就需要在每个鼠标事件内部进行判断——这虽然并不算麻烦，
    /// 但是左键和右键的操作往往毫不想干，每次都进行判断显得很累赘。
    /// </remarks>
    /// </summary>
    public class MouseClickListener : ListenerBase
    {
        /// <summary>
        /// 定义鼠标右键事件
        /// <example>
        /// 使用方法：
        /// <code>
        /// private MouseClickListener listener = null;
        /// public Form1()
        /// {
        ///     InitializeComponent();
        ///     listener = new MouseClickListener(label1);
        ///      listener.MouseRightButtonClick += new MouseEventHandler(listener_MouseLeftButtonClick);
        /// }
        ///
        /// void listener_MouseLeftButtonClick(object sender, MouseEventArgs e)
        /// {
        ///     MessageBox.Show("ri");
        /// }
        /// </code>
        /// </example>
        /// </summary>
        public event MouseEventHandler MouseRightButtonClick;

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="target">要侦听的对象</param>
        public MouseClickListener(Control target)
            : base(target)
        {
            target.MouseClick += new MouseEventHandler(target_MouseClick);
        }
        /// <summary>
        /// 当MouseClick事件发生时，判断是否由鼠标右键激发，如果是则触发自己的MouseLeftButtonClick事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void target_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                if (MouseRightButtonClick != null)
                {
                    MouseRightButtonClick(Target, e);
                }
            }
        }
    }
}
